package com.uaijug.dengue.core;

import java.util.ArrayList;
import java.util.List;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;

@PersistenceCapable
public class Usuario implements BaseBean<com.uaijug.dengue.entidade.Usuario> {

	private static final long serialVersionUID = 1L;
	
	@PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Key key;
	@Persistent
	private String nome;
	@Persistent
	private String email;
	@Persistent
	private String senha;
	@Persistent(mappedBy="usuario")
	private List<RedeSocial> redesSociais;
	// TODO atributo numeroTelefone

	public String getNome() {
		return nome;
	}

	public String getEmail() {
		return email;
	}

	public String getSenha() {
		return senha;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public List<RedeSocial> getRedesSociais() {
		return redesSociais;
	}

	public void setRedesSociais(List<RedeSocial> redesSociais) {
		this.redesSociais = redesSociais;
	}
	
	public com.uaijug.dengue.entidade.Usuario convertToDTO() {
		com.uaijug.dengue.entidade.Usuario usuario = new com.uaijug.dengue.entidade.Usuario();
		usuario.setId(getKey() != null ? getKey().getId() : null);
		usuario.setNome(getNome());
		usuario.setEmail(getEmail());
		usuario.setSenha(getSenha());
		usuario.setRedesSociais(new ArrayList<com.uaijug.dengue.entidade.RedeSocial>());
		for (RedeSocial redeSocial : getRedesSociais()) {
			usuario.getRedesSociais().add(redeSocial.convertToDTO());
		}
		return usuario;
	}

	@Override
	public void convertToBean(com.uaijug.dengue.entidade.Usuario objet) {
		if (objet.getId() != null) {
			setKey(KeyFactory.createKey(Foco.class.getSimpleName(), objet.getId()));
		}
		this.nome = objet.getNome();
		this.email = objet.getEmail();
		this.senha = objet.getSenha();
		if (objet.getRedesSociais() != null && !objet.getRedesSociais().isEmpty()) {
			redesSociais = new ArrayList<RedeSocial>();
			for (com.uaijug.dengue.entidade.RedeSocial redeSocialDTO : objet.getRedesSociais()) {
				RedeSocial redeSocial = new RedeSocial();
				redeSocial.convertToBean(redeSocialDTO);
				redesSociais.add(redeSocial);
			}
		}
	}

	@Override
	public Key getKey() {
		return key;
	}

	@Override
	public void setKey(Key key) {
		this.key = key;
	}
}
